import 'package:flutter/material.dart';

/// 这里写一个ColorDoubleTween 示意一下自定义流程。
// 这个 Tween 负责颜色和 double 类型 同时变化的渐变。
// 首先要有一个基本结构 ColorDouble 来定义需要变化的类型，然后继承自 Tween<ColorDouble> 之后重写lerp 方法，根据 t 生成新对象即可。
// 如果有十几个渐变的属性，这样可以更方便操作，不然要写十几个不同的 Tween 。这样的话，打包成一个就行了。
class ColorDouble {
  final Color? color;
  final double value;

  ColorDouble({this.color = Colors.blue, this.value = 0});
}

class ColorDoubleTween extends Tween<ColorDouble> {
  ColorDoubleTween({required ColorDouble begin, required ColorDouble end})
      : super(begin: begin, end: end);

  @override
  ColorDouble lerp(double t) => ColorDouble(
      color: Color.lerp(begin?.color, end?.color, t),
      value: (begin!.value + (end!.value - begin!.value) * t));
}
